using System;
using System.Collections.Generic;
using System.Text;
using Entidades;
using DataAccessArquitectura;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

/*
 * Nombre archivo: empleadosBuilder.cs 
 *
 * Descripcion: Manipulacion de la tabla empleados, con los metodos de consulta, grabado, actulaizacion
 * y recuperacion de un registro
 *
 * Autor: PLUS-EW
 * Fecha: 28/11/2011 10:32:08
 *
 * Historial
 * ---------------------------------------------------------
 * Autor            Fecha               Modificación
 *
 */

namespace Reglas_Negocio
{
	public class empleadosBuilder
	{
		private const enmTipoBaseDatos mTipoBD = enmTipoBaseDatos.MySQL;

		#region < METODOS PUBLICOS CONSULTA >
		public static DataTable ListarTodos()
		{
			try
			{
				return ListarTodos("");
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		public static DataTable ListarTodos(string filtro)
		{
			DataTable r = new DataTable();
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				r = bd.EjecutarSelectDs("*", "empleados", filtro).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		public static bool Existe(string filtro)
		{
			int numero = 0;
			bool r = false;
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				numero = Convert.ToInt32(bd.EjecutarSelectScalar("COUNT(*)", "empleados", filtro));
				r = (numero > 0);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		#endregion

		#region < METODOS PUBLICOS GRABADO >
		public static bool GrabarViaProcedimiento(empleados datos)
		{
			int numero = 0;
			bool r = false;
			string filtro = "";
			try
			{
				string strConectionInsert = "INSERT INTO empleados (cedula_emp,nombre_emp,apellido_emp,direccion_emp,telefono_emp,id_cat_cargo,genero_emp,id_cat_nivel_acad,fecha_nac_emp,fecha_contrato_emp,id_cat_estado_civil_emp,cargas_familiares_emp,foto_emp,id_cat_doc_identificacion,fecha_salida_emp,estado_emp,cat_jor_id_fk_emp,id_empr_fk,nro_horas_ingreso,nro_horas_atraso,nro_horas_salida,emp_entrada_especial,emp_controla_salida) VALUES (?cedula_emp,?nombre_emp,?apellido_emp,?direccion_emp,?telefono_emp,?id_cat_cargo,?genero_emp,?id_cat_nivel_acad,?fecha_nac_emp,?fecha_contrato_emp,?id_cat_estado_civil_emp,?cargas_familiares_emp,?foto_emp,?id_cat_doc_identificacion,?fecha_salida_emp,?estado_emp,?cat_jor_id_fk_emp,?id_empr_fk,?nro_horas_ingreso,?nro_horas_atraso,?nro_horas_salida,?emp_entrada_especial,?emp_controla_salida);";
                string strConectionUpdate = "UPDATE empleados SET cedula_emp = ?cedula_emp,nombre_emp = ?nombre_emp,apellido_emp = ?apellido_emp,direccion_emp = ?direccion_emp,telefono_emp = ?telefono_emp,id_cat_cargo = ?id_cat_cargo,genero_emp = ?genero_emp,id_cat_nivel_acad = ?id_cat_nivel_acad,fecha_nac_emp = ?fecha_nac_emp,fecha_contrato_emp = ?fecha_contrato_emp,id_cat_estado_civil_emp = ?id_cat_estado_civil_emp,cargas_familiares_emp = ?cargas_familiares_emp,foto_emp = ?foto_emp,id_cat_doc_identificacion = ?id_cat_doc_identificacion,fecha_salida_emp = ?fecha_salida_emp,estado_emp = ?estado_emp,cat_jor_id_fk_emp = ?cat_jor_id_fk_emp,id_empr_fk = ?id_empr_fk,nro_horas_ingreso = ?nro_horas_ingreso,nro_horas_atraso = ?nro_horas_atraso,nro_horas_salida = ?nro_horas_salida,emp_entrada_especial = ?emp_entrada_especial,emp_controla_salida = ?emp_controla_salida WHERE id_emp=?id_emp OR cedula_emp = ?cedula_emp;";

				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				MySqlParameter psqlId_emp = new MySqlParameter("?id_emp", MySqlDbType.Int32);
				MySqlParameter psqlCedula_emp = new MySqlParameter("?cedula_emp", MySqlDbType.VarChar,20);
				MySqlParameter psqlNombre_emp = new MySqlParameter("?nombre_emp", MySqlDbType.VarChar,50);
				MySqlParameter psqlApellido_emp = new MySqlParameter("?apellido_emp", MySqlDbType.VarChar,50);
				MySqlParameter psqlDireccion_emp = new MySqlParameter("?direccion_emp", MySqlDbType.VarChar,200);
				MySqlParameter psqlTelefono_emp = new MySqlParameter("?telefono_emp", MySqlDbType.VarChar,50);
				MySqlParameter psqlId_cat_cargo = new MySqlParameter("?id_cat_cargo", MySqlDbType.Int32);
				MySqlParameter psqlGenero_emp = new MySqlParameter("?genero_emp", MySqlDbType.VarChar,20);
				MySqlParameter psqlId_cat_nivel_acad = new MySqlParameter("?id_cat_nivel_acad", MySqlDbType.Int32);
				MySqlParameter psqlFecha_nac_emp = new MySqlParameter("?fecha_nac_emp", MySqlDbType.Datetime);
				MySqlParameter psqlFecha_contrato_emp = new MySqlParameter("?fecha_contrato_emp", MySqlDbType.Datetime);
				MySqlParameter psqlId_cat_estado_civil_emp = new MySqlParameter("?id_cat_estado_civil_emp", MySqlDbType.Int32);
				MySqlParameter psqlCargas_familiares_emp = new MySqlParameter("?cargas_familiares_emp", MySqlDbType.Int32);
				MySqlParameter psqlFoto_emp = new MySqlParameter("?foto_emp", MySqlDbType.LongBlob);
				MySqlParameter psqlId_cat_doc_identificacion = new MySqlParameter("?id_cat_doc_identificacion", MySqlDbType.Int32);
				MySqlParameter psqlFecha_salida_emp = new MySqlParameter("?fecha_salida_emp", MySqlDbType.Datetime);
				MySqlParameter psqlEstado_emp = new MySqlParameter("?estado_emp", MySqlDbType.Int32);
				MySqlParameter psqlCat_jor_id_fk_emp = new MySqlParameter("?cat_jor_id_fk_emp", MySqlDbType.Int32);
				MySqlParameter psqlId_empr_fk = new MySqlParameter("?id_empr_fk", MySqlDbType.Int32);
				MySqlParameter psqlNro_horas_ingreso = new MySqlParameter("?nro_horas_ingreso", MySqlDbType.Int32);
				MySqlParameter psqlNro_horas_atraso = new MySqlParameter("?nro_horas_atraso", MySqlDbType.Int32);
				MySqlParameter psqlNro_horas_salida = new MySqlParameter("?nro_horas_salida", MySqlDbType.Int32);
				MySqlParameter psqlEmp_entrada_especial = new MySqlParameter("?emp_entrada_especial", MySqlDbType.VarChar,5);
				MySqlParameter psqlEmp_controla_salida = new MySqlParameter("?emp_controla_salida", MySqlDbType.VarChar,5);

				psqlId_emp.Value = datos.Id_emp;
				psqlCedula_emp.Value = datos.Cedula_emp;
				psqlNombre_emp.Value = datos.Nombre_emp;
				psqlApellido_emp.Value = datos.Apellido_emp;
				psqlDireccion_emp.Value = datos.Direccion_emp;
				psqlTelefono_emp.Value = datos.Telefono_emp;
				psqlId_cat_cargo.Value = datos.Id_cat_cargo;
				psqlGenero_emp.Value = datos.Genero_emp;
				psqlId_cat_nivel_acad.Value = datos.Id_cat_nivel_acad;
				psqlFecha_nac_emp.Value = datos.Fecha_nac_emp;
				psqlFecha_contrato_emp.Value = datos.Fecha_contrato_emp;
				psqlId_cat_estado_civil_emp.Value = datos.Id_cat_estado_civil_emp;
				psqlCargas_familiares_emp.Value = datos.Cargas_familiares_emp;
				psqlFoto_emp.Value = datos.Foto_emp;
				psqlId_cat_doc_identificacion.Value = datos.Id_cat_doc_identificacion;
				psqlFecha_salida_emp.Value = datos.Fecha_salida_emp;
				psqlEstado_emp.Value = datos.Estado_emp;
				psqlCat_jor_id_fk_emp.Value = datos.Cat_jor_id_fk_emp;
				psqlId_empr_fk.Value = datos.Id_empr_fk;
				psqlNro_horas_ingreso.Value = datos.Nro_horas_ingreso;
				psqlNro_horas_atraso.Value = datos.Nro_horas_atraso;
				psqlNro_horas_salida.Value = datos.Nro_horas_salida;
				psqlEmp_entrada_especial.Value = datos.Emp_entrada_especial;
				psqlEmp_controla_salida.Value = datos.Emp_controla_salida;

                filtro = string.Format("id_emp= '{0}' OR cedula_emp = '{1}'", datos.Id_emp, datos.Cedula_emp);
				if (!Existe(filtro))
				{
					numero = bd.EjecutarProcedimientoMySQL(strConectionInsert
							, psqlId_emp
							, psqlCedula_emp
							, psqlNombre_emp
							, psqlApellido_emp
							, psqlDireccion_emp
							, psqlTelefono_emp
							, psqlId_cat_cargo
							, psqlGenero_emp
							, psqlId_cat_nivel_acad
							, psqlFecha_nac_emp
							, psqlFecha_contrato_emp
							, psqlId_cat_estado_civil_emp
							, psqlCargas_familiares_emp
							, psqlFoto_emp
							, psqlId_cat_doc_identificacion
							, psqlFecha_salida_emp
							, psqlEstado_emp
							, psqlCat_jor_id_fk_emp
							, psqlId_empr_fk
							, psqlNro_horas_ingreso
							, psqlNro_horas_atraso
							, psqlNro_horas_salida
							, psqlEmp_entrada_especial
							, psqlEmp_controla_salida
							);
					MessageBox.Show("Se grabo [empleados] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				else
				{
					numero = bd.EjecutarProcedimientoMySQL(strConectionUpdate
							, psqlId_emp
							, psqlCedula_emp
							, psqlNombre_emp
							, psqlApellido_emp
							, psqlDireccion_emp
							, psqlTelefono_emp
							, psqlId_cat_cargo
							, psqlGenero_emp
							, psqlId_cat_nivel_acad
							, psqlFecha_nac_emp
							, psqlFecha_contrato_emp
							, psqlId_cat_estado_civil_emp
							, psqlCargas_familiares_emp
							, psqlFoto_emp
							, psqlId_cat_doc_identificacion
							, psqlFecha_salida_emp
							, psqlEstado_emp
							, psqlCat_jor_id_fk_emp
							, psqlId_empr_fk
							, psqlNro_horas_ingreso
							, psqlNro_horas_atraso
							, psqlNro_horas_salida
							, psqlEmp_entrada_especial
							, psqlEmp_controla_salida
							);
					MessageBox.Show("Se actualizó [empleados] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				r = (numero < 0);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static void GrabarViaSql(empleados datos)
		{
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
                string filtro = string.Format("id_emp= '{0}' OR cedula_emp = '{1}'", datos.Id_emp, datos.Cedula_emp);
				if (!Existe(filtro))
				{
					bd.EjecutarInsert("empleados"
						, new CampoValor("cedula_emp", datos.Cedula_emp)
						, new CampoValor("nombre_emp", datos.Nombre_emp)
						, new CampoValor("apellido_emp", datos.Apellido_emp)
						, new CampoValor("direccion_emp", datos.Direccion_emp)
						, new CampoValor("telefono_emp", datos.Telefono_emp)
						, new CampoValor("id_cat_cargo", datos.Id_cat_cargo.ToString())
						, new CampoValor("genero_emp", datos.Genero_emp)
						, new CampoValor("id_cat_nivel_acad", datos.Id_cat_nivel_acad.ToString())
						, new CampoValor("fecha_nac_emp",ValidarBuilder.FormatoFecha( datos.Fecha_nac_emp))
						, new CampoValor("fecha_contrato_emp",ValidarBuilder.FormatoFecha( datos.Fecha_contrato_emp))
						, new CampoValor("id_cat_estado_civil_emp", datos.Id_cat_estado_civil_emp.ToString())
						, new CampoValor("cargas_familiares_emp", datos.Cargas_familiares_emp.ToString())
						, new CampoValor("id_cat_doc_identificacion", datos.Id_cat_doc_identificacion.ToString())
						, new CampoValor("fecha_salida_emp",ValidarBuilder.FormatoFecha( datos.Fecha_salida_emp))
						, new CampoValor("estado_emp", datos.Estado_emp.ToString())
						, new CampoValor("cat_jor_id_fk_emp", datos.Cat_jor_id_fk_emp.ToString())
						, new CampoValor("id_empr_fk", datos.Id_empr_fk.ToString())
						, new CampoValor("nro_horas_ingreso", datos.Nro_horas_ingreso.ToString())
						, new CampoValor("nro_horas_atraso", datos.Nro_horas_atraso.ToString())
						, new CampoValor("nro_horas_salida", datos.Nro_horas_salida.ToString())
						, new CampoValor("emp_entrada_especial", datos.Emp_entrada_especial)
						, new CampoValor("emp_controla_salida", datos.Emp_controla_salida)
						);
					MessageBox.Show("Se grabo [empleados] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				else
				{
					bd.EjecutarUpdate("empleados", filtro
						, new CampoValor("cedula_emp", datos.Cedula_emp)
						, new CampoValor("nombre_emp", datos.Nombre_emp)
						, new CampoValor("apellido_emp", datos.Apellido_emp)
						, new CampoValor("direccion_emp", datos.Direccion_emp)
						, new CampoValor("telefono_emp", datos.Telefono_emp)
						, new CampoValor("id_cat_cargo", datos.Id_cat_cargo.ToString())
						, new CampoValor("genero_emp", datos.Genero_emp)
						, new CampoValor("id_cat_nivel_acad", datos.Id_cat_nivel_acad.ToString())
						, new CampoValor("fecha_nac_emp",ValidarBuilder.FormatoFecha( datos.Fecha_nac_emp))
						, new CampoValor("fecha_contrato_emp",ValidarBuilder.FormatoFecha( datos.Fecha_contrato_emp))
						, new CampoValor("id_cat_estado_civil_emp", datos.Id_cat_estado_civil_emp.ToString())
						, new CampoValor("cargas_familiares_emp", datos.Cargas_familiares_emp.ToString())
						, new CampoValor("id_cat_doc_identificacion", datos.Id_cat_doc_identificacion.ToString())
						, new CampoValor("fecha_salida_emp",ValidarBuilder.FormatoFecha( datos.Fecha_salida_emp))
						, new CampoValor("estado_emp", datos.Estado_emp.ToString())
						, new CampoValor("cat_jor_id_fk_emp", datos.Cat_jor_id_fk_emp.ToString())
						, new CampoValor("id_empr_fk", datos.Id_empr_fk.ToString())
						, new CampoValor("nro_horas_ingreso", datos.Nro_horas_ingreso.ToString())
						, new CampoValor("nro_horas_atraso", datos.Nro_horas_atraso.ToString())
						, new CampoValor("nro_horas_salida", datos.Nro_horas_salida.ToString())
						, new CampoValor("emp_entrada_especial", datos.Emp_entrada_especial)
						, new CampoValor("emp_controla_salida", datos.Emp_controla_salida)
						);
					MessageBox.Show("Se actualizó [empleados] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}

        public static void GrabarViaSql(empleados datos, bool mensaje)
        {
            try
            {
                ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
                string filtro = string.Format("id_emp= '{0}' OR cedula_emp = '{1}'", datos.Id_emp, datos.Cedula_emp);
                if (!Existe(filtro))
                {
                    bd.EjecutarInsert("empleados"
                        , new CampoValor("cedula_emp", datos.Cedula_emp)
                        , new CampoValor("nombre_emp", datos.Nombre_emp)
                        , new CampoValor("apellido_emp", datos.Apellido_emp)
                        , new CampoValor("direccion_emp", datos.Direccion_emp)
                        , new CampoValor("telefono_emp", datos.Telefono_emp)
                        , new CampoValor("id_cat_cargo", datos.Id_cat_cargo.ToString())
                        , new CampoValor("genero_emp", datos.Genero_emp)
                        , new CampoValor("id_cat_nivel_acad", datos.Id_cat_nivel_acad.ToString())
                        , new CampoValor("fecha_nac_emp", ValidarBuilder.FormatoFecha(datos.Fecha_nac_emp))
                        , new CampoValor("fecha_contrato_emp", ValidarBuilder.FormatoFecha(datos.Fecha_contrato_emp))
                        , new CampoValor("id_cat_estado_civil_emp", datos.Id_cat_estado_civil_emp.ToString())
                        , new CampoValor("cargas_familiares_emp", datos.Cargas_familiares_emp.ToString())
                        , new CampoValor("id_cat_doc_identificacion", datos.Id_cat_doc_identificacion.ToString())
                        , new CampoValor("fecha_salida_emp", ValidarBuilder.FormatoFecha(datos.Fecha_salida_emp))
                        , new CampoValor("estado_emp", datos.Estado_emp.ToString())
                        , new CampoValor("cat_jor_id_fk_emp", datos.Cat_jor_id_fk_emp.ToString())
                        , new CampoValor("id_empr_fk", datos.Id_empr_fk.ToString())
                        , new CampoValor("nro_horas_ingreso", datos.Nro_horas_ingreso.ToString())
                        , new CampoValor("nro_horas_atraso", datos.Nro_horas_atraso.ToString())
                        , new CampoValor("nro_horas_salida", datos.Nro_horas_salida.ToString())
                        , new CampoValor("emp_entrada_especial", datos.Emp_entrada_especial)
                        , new CampoValor("emp_controla_salida", datos.Emp_controla_salida)
                        );
                    if(mensaje)
                    MessageBox.Show("Se grabo [empleados] exitosamente....", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    bd.EjecutarUpdate("empleados", filtro
                        , new CampoValor("cedula_emp", datos.Cedula_emp)
                        , new CampoValor("nombre_emp", datos.Nombre_emp)
                        , new CampoValor("apellido_emp", datos.Apellido_emp)
                        , new CampoValor("direccion_emp", datos.Direccion_emp)
                        , new CampoValor("telefono_emp", datos.Telefono_emp)
                        , new CampoValor("id_cat_cargo", datos.Id_cat_cargo.ToString())
                        , new CampoValor("genero_emp", datos.Genero_emp)
                        , new CampoValor("id_cat_nivel_acad", datos.Id_cat_nivel_acad.ToString())
                        , new CampoValor("fecha_nac_emp", ValidarBuilder.FormatoFecha(datos.Fecha_nac_emp))
                        , new CampoValor("fecha_contrato_emp", ValidarBuilder.FormatoFecha(datos.Fecha_contrato_emp))
                        , new CampoValor("id_cat_estado_civil_emp", datos.Id_cat_estado_civil_emp.ToString())
                        , new CampoValor("cargas_familiares_emp", datos.Cargas_familiares_emp.ToString())
                        , new CampoValor("id_cat_doc_identificacion", datos.Id_cat_doc_identificacion.ToString())
                        , new CampoValor("fecha_salida_emp", ValidarBuilder.FormatoFecha(datos.Fecha_salida_emp))
                        , new CampoValor("estado_emp", datos.Estado_emp.ToString())
                        , new CampoValor("cat_jor_id_fk_emp", datos.Cat_jor_id_fk_emp.ToString())
                        , new CampoValor("id_empr_fk", datos.Id_empr_fk.ToString())
                        , new CampoValor("nro_horas_ingreso", datos.Nro_horas_ingreso.ToString())
                        , new CampoValor("nro_horas_atraso", datos.Nro_horas_atraso.ToString())
                        , new CampoValor("nro_horas_salida", datos.Nro_horas_salida.ToString())
                        , new CampoValor("emp_entrada_especial", datos.Emp_entrada_especial)
                        , new CampoValor("emp_controla_salida", datos.Emp_controla_salida)
                        );
                    if (mensaje)
                    MessageBox.Show("Se actualizó [empleados] exitosamente....", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static void Actualiza_tiempos_ViaSql(empleados datos)
        {
            try
            {
                ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
                string filtro = string.Format("id_emp='{0}'", datos.Id_emp);

                bd.EjecutarUpdate("empleados", filtro
                    , new CampoValor("nro_horas_ingreso", datos.Nro_horas_ingreso.ToString())
                    , new CampoValor("nro_horas_atraso", datos.Nro_horas_atraso.ToString())
                    , new CampoValor("nro_horas_salida", datos.Nro_horas_salida.ToString())
                    );
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
		#endregion

		#region < METODOS PUBLICOS RECUPERACION >
		public static empleados Recuperar(string filtro)
		{
			empleados r = new empleados();
			try
			{
				if (Existe(filtro))
				{
					DataTable ds = ListarTodos(filtro);
					r.Id_emp = Convert.ToInt32(ds.Rows[0]["id_emp"]);
					if (ds.Rows[0]["cedula_emp"] != System.DBNull.Value)
						r.Cedula_emp = ds.Rows[0]["cedula_emp"].ToString();
					if (ds.Rows[0]["cedula_emp"] == System.DBNull.Value)
						r.Cedula_emp = "";
					if (ds.Rows[0]["nombre_emp"] != System.DBNull.Value)
						r.Nombre_emp = ds.Rows[0]["nombre_emp"].ToString();
					if (ds.Rows[0]["nombre_emp"] == System.DBNull.Value)
						r.Nombre_emp = "";
					if (ds.Rows[0]["apellido_emp"] != System.DBNull.Value)
						r.Apellido_emp = ds.Rows[0]["apellido_emp"].ToString();
					if (ds.Rows[0]["apellido_emp"] == System.DBNull.Value)
						r.Apellido_emp = "";
					if (ds.Rows[0]["direccion_emp"] != System.DBNull.Value)
						r.Direccion_emp = ds.Rows[0]["direccion_emp"].ToString();
					if (ds.Rows[0]["direccion_emp"] == System.DBNull.Value)
						r.Direccion_emp = "";
					if (ds.Rows[0]["telefono_emp"] != System.DBNull.Value)
						r.Telefono_emp = ds.Rows[0]["telefono_emp"].ToString();
					if (ds.Rows[0]["telefono_emp"] == System.DBNull.Value)
						r.Telefono_emp = "";
					r.Id_cat_cargo = Convert.ToInt32(ds.Rows[0]["id_cat_cargo"]);
					if (ds.Rows[0]["genero_emp"] != System.DBNull.Value)
						r.Genero_emp = ds.Rows[0]["genero_emp"].ToString();
					if (ds.Rows[0]["genero_emp"] == System.DBNull.Value)
						r.Genero_emp = "";
					r.Id_cat_nivel_acad = Convert.ToInt32(ds.Rows[0]["id_cat_nivel_acad"]);
					if (ds.Rows[0]["fecha_nac_emp"] != System.DBNull.Value)
						r.Fecha_nac_emp = Convert.ToDateTime(ds.Rows[0]["fecha_nac_emp"]);
					if (ds.Rows[0]["fecha_nac_emp"] == System.DBNull.Value)
						r.Fecha_nac_emp = DateTime.Now;
					if (ds.Rows[0]["fecha_contrato_emp"] != System.DBNull.Value)
						r.Fecha_contrato_emp = Convert.ToDateTime(ds.Rows[0]["fecha_contrato_emp"]);
					if (ds.Rows[0]["fecha_contrato_emp"] == System.DBNull.Value)
						r.Fecha_contrato_emp = DateTime.Now;
					r.Id_cat_estado_civil_emp = Convert.ToInt32(ds.Rows[0]["id_cat_estado_civil_emp"]);
					r.Cargas_familiares_emp = Convert.ToInt32(ds.Rows[0]["cargas_familiares_emp"]);
					if (ds.Rows[0]["foto_emp"] != System.DBNull.Value)
						r.Foto_emp = (byte[])ds.Rows[0]["foto_emp"];
					if (ds.Rows[0]["foto_emp"] == System.DBNull.Value)
						r.Foto_emp = null;
					r.Id_cat_doc_identificacion = Convert.ToInt32(ds.Rows[0]["id_cat_doc_identificacion"]);
					if (ds.Rows[0]["fecha_salida_emp"] != System.DBNull.Value)
						r.Fecha_salida_emp = Convert.ToDateTime(ds.Rows[0]["fecha_salida_emp"]);
					if (ds.Rows[0]["fecha_salida_emp"] == System.DBNull.Value)
						r.Fecha_salida_emp = DateTime.Now;
					r.Estado_emp = Convert.ToInt32(ds.Rows[0]["estado_emp"]);
					r.Cat_jor_id_fk_emp = Convert.ToInt32(ds.Rows[0]["cat_jor_id_fk_emp"]);
					r.Id_empr_fk = Convert.ToInt32(ds.Rows[0]["id_empr_fk"]);
					r.Nro_horas_ingreso = Convert.ToInt32(ds.Rows[0]["nro_horas_ingreso"]);
					r.Nro_horas_atraso = Convert.ToInt32(ds.Rows[0]["nro_horas_atraso"]);
					r.Nro_horas_salida = Convert.ToInt32(ds.Rows[0]["nro_horas_salida"]);
					if (ds.Rows[0]["emp_entrada_especial"] != System.DBNull.Value)
						r.Emp_entrada_especial = ds.Rows[0]["emp_entrada_especial"].ToString();
					if (ds.Rows[0]["emp_entrada_especial"] == System.DBNull.Value)
						r.Emp_entrada_especial = "";
					if (ds.Rows[0]["emp_controla_salida"] != System.DBNull.Value)
						r.Emp_controla_salida = ds.Rows[0]["emp_controla_salida"].ToString();
					if (ds.Rows[0]["emp_controla_salida"] == System.DBNull.Value)
						r.Emp_controla_salida = "";
					r.Cat_cargos = cat_cargosBuilder.Recuperar("id_cat_cargo=" + ds.Rows[0]["id_cat_cargo"]);
					r.Empresa = empresaBuilder.Recuperar("id_empr=" + ds.Rows[0]["id_empr_fk"]);
					r.Cat_doc_identificacion = cat_doc_identificacionBuilder.Recuperar("id_cat_doc_iden=" + ds.Rows[0]["id_cat_doc_identificacion"]);
					r.Cat_jornada = cat_jornadaBuilder.Recuperar("id_jor=" + ds.Rows[0]["cat_jor_id_fk_emp"]);
					r.Cat_estado_civil = cat_estado_civilBuilder.Recuperar("id_cat_estado_civil_emp=" + ds.Rows[0]["id_cat_estado_civil_emp"]);
					r.Cat_nivel_academico = cat_nivel_academicoBuilder.Recuperar("id_cat_nivel_acad=" + ds.Rows[0]["id_cat_nivel_acad"]);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

        public static empleados Recuperar_sin_joins(string filtro)
        {
            empleados r = new empleados();
            try
            {
                if (Existe(filtro))
                {
                    DataTable ds = ListarTodos(filtro);
                    r.Id_emp = Convert.ToInt32(ds.Rows[0]["id_emp"]);
                    if (ds.Rows[0]["cedula_emp"] != System.DBNull.Value)
                        r.Cedula_emp = ds.Rows[0]["cedula_emp"].ToString();
                    if (ds.Rows[0]["cedula_emp"] == System.DBNull.Value)
                        r.Cedula_emp = "";
                    if (ds.Rows[0]["nombre_emp"] != System.DBNull.Value)
                        r.Nombre_emp = ds.Rows[0]["nombre_emp"].ToString();
                    if (ds.Rows[0]["nombre_emp"] == System.DBNull.Value)
                        r.Nombre_emp = "";
                    if (ds.Rows[0]["apellido_emp"] != System.DBNull.Value)
                        r.Apellido_emp = ds.Rows[0]["apellido_emp"].ToString();
                    if (ds.Rows[0]["apellido_emp"] == System.DBNull.Value)
                        r.Apellido_emp = "";
                    if (ds.Rows[0]["direccion_emp"] != System.DBNull.Value)
                        r.Direccion_emp = ds.Rows[0]["direccion_emp"].ToString();
                    if (ds.Rows[0]["direccion_emp"] == System.DBNull.Value)
                        r.Direccion_emp = "";
                    if (ds.Rows[0]["telefono_emp"] != System.DBNull.Value)
                        r.Telefono_emp = ds.Rows[0]["telefono_emp"].ToString();
                    if (ds.Rows[0]["telefono_emp"] == System.DBNull.Value)
                        r.Telefono_emp = "";
                    r.Id_cat_cargo = Convert.ToInt32(ds.Rows[0]["id_cat_cargo"]);
                    if (ds.Rows[0]["genero_emp"] != System.DBNull.Value)
                        r.Genero_emp = ds.Rows[0]["genero_emp"].ToString();
                    if (ds.Rows[0]["genero_emp"] == System.DBNull.Value)
                        r.Genero_emp = "";
                    r.Id_cat_nivel_acad = Convert.ToInt32(ds.Rows[0]["id_cat_nivel_acad"]);
                    if (ds.Rows[0]["fecha_nac_emp"] != System.DBNull.Value)
                        r.Fecha_nac_emp = Convert.ToDateTime(ds.Rows[0]["fecha_nac_emp"]);
                    if (ds.Rows[0]["fecha_nac_emp"] == System.DBNull.Value)
                        r.Fecha_nac_emp = DateTime.Now;
                    if (ds.Rows[0]["fecha_contrato_emp"] != System.DBNull.Value)
                        r.Fecha_contrato_emp = Convert.ToDateTime(ds.Rows[0]["fecha_contrato_emp"]);
                    if (ds.Rows[0]["fecha_contrato_emp"] == System.DBNull.Value)
                        r.Fecha_contrato_emp = DateTime.Now;
                    r.Id_cat_estado_civil_emp = Convert.ToInt32(ds.Rows[0]["id_cat_estado_civil_emp"]);
                    r.Cargas_familiares_emp = Convert.ToInt32(ds.Rows[0]["cargas_familiares_emp"]);
                    if (ds.Rows[0]["foto_emp"] != System.DBNull.Value)
                        r.Foto_emp = (byte[])ds.Rows[0]["foto_emp"];
                    if (ds.Rows[0]["foto_emp"] == System.DBNull.Value)
                        r.Foto_emp = null;
                    r.Id_cat_doc_identificacion = Convert.ToInt32(ds.Rows[0]["id_cat_doc_identificacion"]);
                    if (ds.Rows[0]["fecha_salida_emp"] != System.DBNull.Value)
                        r.Fecha_salida_emp = Convert.ToDateTime(ds.Rows[0]["fecha_salida_emp"]);
                    if (ds.Rows[0]["fecha_salida_emp"] == System.DBNull.Value)
                        r.Fecha_salida_emp = DateTime.Now;
                    r.Estado_emp = Convert.ToInt32(ds.Rows[0]["estado_emp"]);
                    r.Cat_jor_id_fk_emp = Convert.ToInt32(ds.Rows[0]["cat_jor_id_fk_emp"]);
                    r.Id_empr_fk = Convert.ToInt32(ds.Rows[0]["id_empr_fk"]);
                    r.Nro_horas_ingreso = Convert.ToInt32(ds.Rows[0]["nro_horas_ingreso"]);
                    r.Nro_horas_atraso = Convert.ToInt32(ds.Rows[0]["nro_horas_atraso"]);
                    r.Nro_horas_salida = Convert.ToInt32(ds.Rows[0]["nro_horas_salida"]);
                    if (ds.Rows[0]["emp_entrada_especial"] != System.DBNull.Value)
                        r.Emp_entrada_especial = ds.Rows[0]["emp_entrada_especial"].ToString();
                    if (ds.Rows[0]["emp_entrada_especial"] == System.DBNull.Value)
                        r.Emp_entrada_especial = "";
                    if (ds.Rows[0]["emp_controla_salida"] != System.DBNull.Value)
                        r.Emp_controla_salida = ds.Rows[0]["emp_controla_salida"].ToString();
                    if (ds.Rows[0]["emp_controla_salida"] == System.DBNull.Value)
                        r.Emp_controla_salida = "";                   
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return r;
        }
		#endregion

		#region < METODOS PUBLICOS BORRADO >
		public static void Borrar(string filtro)
		{
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				bd.EjecutarDelete("empleados", filtro);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		public static void BorrarTodos()
		{
			try
			{
				Borrar("");
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		#endregion

		#region < METODOS PUBLICOS EXTRAS >
		public static void Listar_Combobox(ComboBox cmbempleados, string filtro, string nombre_display)
		{
			cmbempleados.DataSource = ListarTodos(filtro);
			cmbempleados.DisplayMember = nombre_display;
			cmbempleados.ValueMember = "id_emp";
		}	
        public static DataTable ListarTodos_Alias(string filtro)
        {
            DataTable r = new DataTable();
            try
            {
                ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
                r = bd.EjecutarSelectDs("id_emp AS REFERENCIA,cedula_emp AS IDENTIFICACION,CONCAT(nombre_emp ,' ',apellido_emp) AS EMPLEADOS,direccion_emp AS DIRECCION,telefono_emp AS TELEFONO,genero_emp AS GENERO,fecha_nac_emp AS \"FECHA NACIMIENTO\",fecha_contrato_emp AS \"FECHA CONTRATO\",cargas_familiares_emp AS CARGAS,foto_emp AS FOTO,estado_emp AS ESTADO", "empleados", filtro).Tables[0];
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return r;
        }
        public static DataTable ListarTodos_Alias_reporte(string filtro)
        {
            DataTable r = new DataTable();
            try
            {
                ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
                r = bd.EjecutarSelectDs("id_emp AS id_emp,cedula_emp AS cedula_emp,CONCAT(nombre_emp,' ',apellido_emp) AS nombre_emp,apellido_emp AS apellido_emp,direccion_emp AS direccion_emp,telefono_emp AS telefono_emp,id_cat_cargo AS id_cat_cargo,genero_emp AS genero_emp,id_cat_nivel_acad AS id_cat_nivel_acad,fecha_nac_emp AS fecha_nac_emp,fecha_contrato_emp AS fecha_contrato_emp,id_cat_estado_civil_emp AS id_cat_estado_civil_emp,cargas_familiares_emp AS cargas_familiares_emp,foto_emp AS foto_emp,id_cat_doc_identificacion AS id_cat_doc_identificacion,fecha_salida_emp AS fecha_salida_emp,estado_emp AS estado_emp,cat_jor_id_fk_emp AS cat_jor_id_fk_emp,id_empr_fk AS id_empr_fk,nro_horas_ingreso AS nro_horas_ingreso,nro_horas_atraso AS nro_horas_atraso,nro_horas_salida AS nro_horas_salida,emp_entrada_especial AS emp_entrada_especial,emp_controla_salida AS emp_controla_salida", "empleados", filtro).Tables[0];
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return r;
        }
		public static List<empleados> ListarTodos_List(string filtro)
		{
			List<empleados> r = new List<empleados>();
			try
			{
				DataTable dt = ListarTodos(filtro);
				for (int i = 0; i < dt.Rows.Count; i++)
					r.Add(Recuperar("id_emp="+dt.Rows[i]["id_emp"]));
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Cat_cargos(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "empleados.id_cat_cargo = cat_cargos.id_cat_cargo";
				else
					joins_ = "empleados.id_cat_cargo = cat_cargos.id_cat_cargo AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados, cat_cargos","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Cat_cargos_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "empleados.id_emp AS empleados.id_emp,empleados.cedula_emp AS empleados.cedula_emp,empleados.nombre_emp AS empleados.nombre_emp,empleados.apellido_emp AS empleados.apellido_emp,empleados.direccion_emp AS empleados.direccion_emp,empleados.telefono_emp AS empleados.telefono_emp,empleados.id_cat_cargo AS empleados.id_cat_cargo,empleados.genero_emp AS empleados.genero_emp,empleados.id_cat_nivel_acad AS empleados.id_cat_nivel_acad,empleados.fecha_nac_emp AS empleados.fecha_nac_emp,empleados.fecha_contrato_emp AS empleados.fecha_contrato_emp,empleados.id_cat_estado_civil_emp AS empleados.id_cat_estado_civil_emp,empleados.cargas_familiares_emp AS empleados.cargas_familiares_emp,empleados.foto_emp AS empleados.foto_emp,empleados.id_cat_doc_identificacion AS empleados.id_cat_doc_identificacion,empleados.fecha_salida_emp AS empleados.fecha_salida_emp,empleados.estado_emp AS empleados.estado_emp,empleados.cat_jor_id_fk_emp AS empleados.cat_jor_id_fk_emp,empleados.id_empr_fk AS empleados.id_empr_fk,empleados.nro_horas_ingreso AS empleados.nro_horas_ingreso,empleados.nro_horas_atraso AS empleados.nro_horas_atraso,empleados.nro_horas_salida AS empleados.nro_horas_salida,empleados.emp_entrada_especial AS empleados.emp_entrada_especial,empleados.emp_controla_salida AS empleados.emp_controla_salida," + 
							 "cat_cargos.id_cat_cargo AS cat_cargos.id_cat_cargo,cat_cargos.nombre_cat_cargo AS cat_cargos.nombre_cat_cargo";
			try
			{
				if(filtro=="")
					joins_ = "empleados.id_cat_cargo = cat_cargos.id_cat_cargo";
				else
					joins_ = "empleados.id_cat_cargo = cat_cargos.id_cat_cargo AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados, cat_cargos",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Empresa(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "empleados.id_empr_fk = empresa.id_empr";
				else
					joins_ = "empleados.id_empr_fk = empresa.id_empr AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados, empresa","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Empresa_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "empleados.id_emp AS empleados.id_emp,empleados.cedula_emp AS empleados.cedula_emp,empleados.nombre_emp AS empleados.nombre_emp,empleados.apellido_emp AS empleados.apellido_emp,empleados.direccion_emp AS empleados.direccion_emp,empleados.telefono_emp AS empleados.telefono_emp,empleados.id_cat_cargo AS empleados.id_cat_cargo,empleados.genero_emp AS empleados.genero_emp,empleados.id_cat_nivel_acad AS empleados.id_cat_nivel_acad,empleados.fecha_nac_emp AS empleados.fecha_nac_emp,empleados.fecha_contrato_emp AS empleados.fecha_contrato_emp,empleados.id_cat_estado_civil_emp AS empleados.id_cat_estado_civil_emp,empleados.cargas_familiares_emp AS empleados.cargas_familiares_emp,empleados.foto_emp AS empleados.foto_emp,empleados.id_cat_doc_identificacion AS empleados.id_cat_doc_identificacion,empleados.fecha_salida_emp AS empleados.fecha_salida_emp,empleados.estado_emp AS empleados.estado_emp,empleados.cat_jor_id_fk_emp AS empleados.cat_jor_id_fk_emp,empleados.id_empr_fk AS empleados.id_empr_fk,empleados.nro_horas_ingreso AS empleados.nro_horas_ingreso,empleados.nro_horas_atraso AS empleados.nro_horas_atraso,empleados.nro_horas_salida AS empleados.nro_horas_salida,empleados.emp_entrada_especial AS empleados.emp_entrada_especial,empleados.emp_controla_salida AS empleados.emp_controla_salida," + 
							 "empresa.id_empr AS empresa.id_empr,empresa.ruc_empr AS empresa.ruc_empr,empresa.nombre_empr AS empresa.nombre_empr,empresa.direccion_empr AS empresa.direccion_empr,empresa.telefono_empr AS empresa.telefono_empr,empresa.email_empr AS empresa.email_empr,empresa.encargado_empr AS empresa.encargado_empr,empresa.logo_empr AS empresa.logo_empr,empresa.ciudad_empr AS empresa.ciudad_empr,empresa.tipo_empr AS empresa.tipo_empr";
			try
			{
				if(filtro=="")
					joins_ = "empleados.id_empr_fk = empresa.id_empr";
				else
					joins_ = "empleados.id_empr_fk = empresa.id_empr AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados, empresa",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Cat_doc_identificacion(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "empleados.id_cat_doc_identificacion = cat_doc_identificacion.id_cat_doc_iden";
				else
					joins_ = "empleados.id_cat_doc_identificacion = cat_doc_identificacion.id_cat_doc_iden AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados, cat_doc_identificacion","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Cat_doc_identificacion_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "empleados.id_emp AS empleados.id_emp,empleados.cedula_emp AS empleados.cedula_emp,empleados.nombre_emp AS empleados.nombre_emp,empleados.apellido_emp AS empleados.apellido_emp,empleados.direccion_emp AS empleados.direccion_emp,empleados.telefono_emp AS empleados.telefono_emp,empleados.id_cat_cargo AS empleados.id_cat_cargo,empleados.genero_emp AS empleados.genero_emp,empleados.id_cat_nivel_acad AS empleados.id_cat_nivel_acad,empleados.fecha_nac_emp AS empleados.fecha_nac_emp,empleados.fecha_contrato_emp AS empleados.fecha_contrato_emp,empleados.id_cat_estado_civil_emp AS empleados.id_cat_estado_civil_emp,empleados.cargas_familiares_emp AS empleados.cargas_familiares_emp,empleados.foto_emp AS empleados.foto_emp,empleados.id_cat_doc_identificacion AS empleados.id_cat_doc_identificacion,empleados.fecha_salida_emp AS empleados.fecha_salida_emp,empleados.estado_emp AS empleados.estado_emp,empleados.cat_jor_id_fk_emp AS empleados.cat_jor_id_fk_emp,empleados.id_empr_fk AS empleados.id_empr_fk,empleados.nro_horas_ingreso AS empleados.nro_horas_ingreso,empleados.nro_horas_atraso AS empleados.nro_horas_atraso,empleados.nro_horas_salida AS empleados.nro_horas_salida,empleados.emp_entrada_especial AS empleados.emp_entrada_especial,empleados.emp_controla_salida AS empleados.emp_controla_salida," + 
							 "cat_doc_identificacion.id_cat_doc_iden AS cat_doc_identificacion.id_cat_doc_iden,cat_doc_identificacion.nom_cat_doc_iden AS cat_doc_identificacion.nom_cat_doc_iden";
			try
			{
				if(filtro=="")
					joins_ = "empleados.id_cat_doc_identificacion = cat_doc_identificacion.id_cat_doc_iden";
				else
					joins_ = "empleados.id_cat_doc_identificacion = cat_doc_identificacion.id_cat_doc_iden AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados, cat_doc_identificacion",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Cat_jornada(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "empleados.cat_jor_id_fk_emp = cat_jornada.id_jor";
				else
					joins_ = "empleados.cat_jor_id_fk_emp = cat_jornada.id_jor AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados, cat_jornada","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
        public static DataTable ListarTodos_Joins_Cat_jornada_Alias(string filtro)
        {
            DataTable r = new DataTable();
            string joins_ = "";
            string campos_ = "id_emp AS REFERENCIA,cedula_emp AS IDENTIFICACION,CONCAT(nombre_emp ,' ',apellido_emp) AS EMPLEADOS,cat_jornada.tipo_jor AS \"Tipo Laboral\",direccion_emp AS DIRECCION,telefono_emp AS TELEFONO,genero_emp AS GENERO,fecha_nac_emp AS \"FECHA NACIMIENTO\",fecha_contrato_emp AS \"FECHA CONTRATO\",cargas_familiares_emp AS CARGAS,foto_emp AS FOTO,REPLACE(REPLACE(estado_emp,'0','INACTIVO'),'1','HABILITADO') AS ESTADO";
            try
            {
                if (filtro == "")
                    joins_ = "empleados.cat_jor_id_fk_emp = cat_jornada.id_jor";
                else
                    joins_ = "empleados.cat_jor_id_fk_emp = cat_jornada.id_jor AND " + filtro;
                r = ValidarBuilder.ListarTodos(joins_, "empleados, cat_jornada", campos_).Tables[0];
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return r;
        }
        //public static DataTable ListarTodos_Joins_Cat_jornada_Alias(string filtro)
        //{
        //    DataTable r = new DataTable();
        //    string joins_ = "";
        //    string campos_ = "empleados.id_emp AS empleados.id_emp,empleados.cedula_emp AS empleados.cedula_emp,empleados.nombre_emp AS empleados.nombre_emp,empleados.apellido_emp AS empleados.apellido_emp,empleados.direccion_emp AS empleados.direccion_emp,empleados.telefono_emp AS empleados.telefono_emp,empleados.id_cat_cargo AS empleados.id_cat_cargo,empleados.genero_emp AS empleados.genero_emp,empleados.id_cat_nivel_acad AS empleados.id_cat_nivel_acad,empleados.fecha_nac_emp AS empleados.fecha_nac_emp,empleados.fecha_contrato_emp AS empleados.fecha_contrato_emp,empleados.id_cat_estado_civil_emp AS empleados.id_cat_estado_civil_emp,empleados.cargas_familiares_emp AS empleados.cargas_familiares_emp,empleados.foto_emp AS empleados.foto_emp,empleados.id_cat_doc_identificacion AS empleados.id_cat_doc_identificacion,empleados.fecha_salida_emp AS empleados.fecha_salida_emp,empleados.estado_emp AS empleados.estado_emp,empleados.cat_jor_id_fk_emp AS empleados.cat_jor_id_fk_emp,empleados.id_empr_fk AS empleados.id_empr_fk,empleados.nro_horas_ingreso AS empleados.nro_horas_ingreso,empleados.nro_horas_atraso AS empleados.nro_horas_atraso,empleados.nro_horas_salida AS empleados.nro_horas_salida,empleados.emp_entrada_especial AS empleados.emp_entrada_especial,empleados.emp_controla_salida AS empleados.emp_controla_salida," + 
        //                     "cat_jornada.id_jor AS cat_jornada.id_jor,cat_jornada.tipo_jor AS cat_jornada.tipo_jor,cat_jornada.hora_ini_matutina AS cat_jornada.hora_ini_matutina,cat_jornada.hora_fin_matutina AS cat_jornada.hora_fin_matutina,cat_jornada.hora_ini_vespertina AS cat_jornada.hora_ini_vespertina,cat_jornada.hora_fin_vespertina AS cat_jornada.hora_fin_vespertina,cat_jornada.hora_ini_nocturna AS cat_jornada.hora_ini_nocturna,cat_jornada.hora_fin_nocturna AS cat_jornada.hora_fin_nocturna,cat_jornada.hora_ini_madrugada AS cat_jornada.hora_ini_madrugada,cat_jornada.hora_fin_madrugada AS cat_jornada.hora_fin_madrugada,cat_jornada.nro_dias AS cat_jornada.nro_dias";
        //    try
        //    {
        //        if(filtro=="")
        //            joins_ = "empleados.cat_jor_id_fk_emp = cat_jornada.id_jor";
        //        else
        //            joins_ = "empleados.cat_jor_id_fk_emp = cat_jornada.id_jor AND " + filtro;
        //        r = ValidarBuilder.ListarTodos(joins_, "empleados, cat_jornada",campos_).Tables[0];
        //    }
        //    catch (Exception ex)
        //    {
        //        throw ex;
        //    }
        //    return r;
        //}

		public static DataTable ListarTodos_Joins_Cat_estado_civil(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "empleados.id_cat_estado_civil_emp = cat_estado_civil.id_cat_estado_civil_emp";
				else
					joins_ = "empleados.id_cat_estado_civil_emp = cat_estado_civil.id_cat_estado_civil_emp AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados, cat_estado_civil","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Cat_estado_civil_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "empleados.id_emp AS empleados.id_emp,empleados.cedula_emp AS empleados.cedula_emp,empleados.nombre_emp AS empleados.nombre_emp,empleados.apellido_emp AS empleados.apellido_emp,empleados.direccion_emp AS empleados.direccion_emp,empleados.telefono_emp AS empleados.telefono_emp,empleados.id_cat_cargo AS empleados.id_cat_cargo,empleados.genero_emp AS empleados.genero_emp,empleados.id_cat_nivel_acad AS empleados.id_cat_nivel_acad,empleados.fecha_nac_emp AS empleados.fecha_nac_emp,empleados.fecha_contrato_emp AS empleados.fecha_contrato_emp,empleados.id_cat_estado_civil_emp AS empleados.id_cat_estado_civil_emp,empleados.cargas_familiares_emp AS empleados.cargas_familiares_emp,empleados.foto_emp AS empleados.foto_emp,empleados.id_cat_doc_identificacion AS empleados.id_cat_doc_identificacion,empleados.fecha_salida_emp AS empleados.fecha_salida_emp,empleados.estado_emp AS empleados.estado_emp,empleados.cat_jor_id_fk_emp AS empleados.cat_jor_id_fk_emp,empleados.id_empr_fk AS empleados.id_empr_fk,empleados.nro_horas_ingreso AS empleados.nro_horas_ingreso,empleados.nro_horas_atraso AS empleados.nro_horas_atraso,empleados.nro_horas_salida AS empleados.nro_horas_salida,empleados.emp_entrada_especial AS empleados.emp_entrada_especial,empleados.emp_controla_salida AS empleados.emp_controla_salida," + 
							 "cat_estado_civil.id_cat_estado_civil_emp AS cat_estado_civil.id_cat_estado_civil_emp,cat_estado_civil.nombre_cat_estado_civil_emp AS cat_estado_civil.nombre_cat_estado_civil_emp";
			try
			{
				if(filtro=="")
					joins_ = "empleados.id_cat_estado_civil_emp = cat_estado_civil.id_cat_estado_civil_emp";
				else
					joins_ = "empleados.id_cat_estado_civil_emp = cat_estado_civil.id_cat_estado_civil_emp AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados, cat_estado_civil",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Cat_nivel_academico(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "empleados.id_cat_nivel_acad = cat_nivel_academico.id_cat_nivel_acad";
				else
					joins_ = "empleados.id_cat_nivel_acad = cat_nivel_academico.id_cat_nivel_acad AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados, cat_nivel_academico","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Cat_nivel_academico_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "empleados.id_emp AS empleados.id_emp,empleados.cedula_emp AS empleados.cedula_emp,empleados.nombre_emp AS empleados.nombre_emp,empleados.apellido_emp AS empleados.apellido_emp,empleados.direccion_emp AS empleados.direccion_emp,empleados.telefono_emp AS empleados.telefono_emp,empleados.id_cat_cargo AS empleados.id_cat_cargo,empleados.genero_emp AS empleados.genero_emp,empleados.id_cat_nivel_acad AS empleados.id_cat_nivel_acad,empleados.fecha_nac_emp AS empleados.fecha_nac_emp,empleados.fecha_contrato_emp AS empleados.fecha_contrato_emp,empleados.id_cat_estado_civil_emp AS empleados.id_cat_estado_civil_emp,empleados.cargas_familiares_emp AS empleados.cargas_familiares_emp,empleados.foto_emp AS empleados.foto_emp,empleados.id_cat_doc_identificacion AS empleados.id_cat_doc_identificacion,empleados.fecha_salida_emp AS empleados.fecha_salida_emp,empleados.estado_emp AS empleados.estado_emp,empleados.cat_jor_id_fk_emp AS empleados.cat_jor_id_fk_emp,empleados.id_empr_fk AS empleados.id_empr_fk,empleados.nro_horas_ingreso AS empleados.nro_horas_ingreso,empleados.nro_horas_atraso AS empleados.nro_horas_atraso,empleados.nro_horas_salida AS empleados.nro_horas_salida,empleados.emp_entrada_especial AS empleados.emp_entrada_especial,empleados.emp_controla_salida AS empleados.emp_controla_salida," + 
							 "cat_nivel_academico.id_cat_nivel_acad AS cat_nivel_academico.id_cat_nivel_acad,cat_nivel_academico.nombre_cat_nivel_acad AS cat_nivel_academico.nombre_cat_nivel_acad";
			try
			{
				if(filtro=="")
					joins_ = "empleados.id_cat_nivel_acad = cat_nivel_academico.id_cat_nivel_acad";
				else
					joins_ = "empleados.id_cat_nivel_acad = cat_nivel_academico.id_cat_nivel_acad AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados, cat_nivel_academico",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "empleados.id_cat_cargo = cat_cargos.id_cat_cargo AND empleados.id_empr_fk = empresa.id_empr AND empleados.id_cat_doc_identificacion = cat_doc_identificacion.id_cat_doc_iden AND empleados.cat_jor_id_fk_emp = cat_jornada.id_jor AND empleados.id_cat_estado_civil_emp = cat_estado_civil.id_cat_estado_civil_emp AND empleados.id_cat_nivel_acad = cat_nivel_academico.id_cat_nivel_acad ";
				else
					joins_ = "empleados.id_cat_cargo = cat_cargos.id_cat_cargo AND empleados.id_empr_fk = empresa.id_empr AND empleados.id_cat_doc_identificacion = cat_doc_identificacion.id_cat_doc_iden AND empleados.cat_jor_id_fk_emp = cat_jornada.id_jor AND empleados.id_cat_estado_civil_emp = cat_estado_civil.id_cat_estado_civil_emp AND empleados.id_cat_nivel_acad = cat_nivel_academico.id_cat_nivel_acad AND  " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "cat_cargos,empresa,cat_doc_identificacion,cat_jornada,cat_estado_civil,cat_nivel_academico,empleados","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "empleados.id_emp AS empleados.id_emp,empleados.cedula_emp AS empleados.cedula_emp,empleados.nombre_emp AS empleados.nombre_emp,empleados.apellido_emp AS empleados.apellido_emp,empleados.direccion_emp AS empleados.direccion_emp,empleados.telefono_emp AS empleados.telefono_emp,empleados.id_cat_cargo AS empleados.id_cat_cargo,empleados.genero_emp AS empleados.genero_emp,empleados.id_cat_nivel_acad AS empleados.id_cat_nivel_acad,empleados.fecha_nac_emp AS empleados.fecha_nac_emp,empleados.fecha_contrato_emp AS empleados.fecha_contrato_emp,empleados.id_cat_estado_civil_emp AS empleados.id_cat_estado_civil_emp,empleados.cargas_familiares_emp AS empleados.cargas_familiares_emp,empleados.foto_emp AS empleados.foto_emp,empleados.id_cat_doc_identificacion AS empleados.id_cat_doc_identificacion,empleados.fecha_salida_emp AS empleados.fecha_salida_emp,empleados.estado_emp AS empleados.estado_emp,empleados.cat_jor_id_fk_emp AS empleados.cat_jor_id_fk_emp,empleados.id_empr_fk AS empleados.id_empr_fk,empleados.nro_horas_ingreso AS empleados.nro_horas_ingreso,empleados.nro_horas_atraso AS empleados.nro_horas_atraso,empleados.nro_horas_salida AS empleados.nro_horas_salida,empleados.emp_entrada_especial AS empleados.emp_entrada_especial,empleados.emp_controla_salida AS empleados.emp_controla_salida," + 
							 "cat_cargos.id_cat_cargo AS cat_cargos.id_cat_cargo,cat_cargos.nombre_cat_cargo AS cat_cargos.nombre_cat_cargo," + 
							 "empresa.id_empr AS empresa.id_empr,empresa.ruc_empr AS empresa.ruc_empr,empresa.nombre_empr AS empresa.nombre_empr,empresa.direccion_empr AS empresa.direccion_empr,empresa.telefono_empr AS empresa.telefono_empr,empresa.email_empr AS empresa.email_empr,empresa.encargado_empr AS empresa.encargado_empr,empresa.logo_empr AS empresa.logo_empr,empresa.ciudad_empr AS empresa.ciudad_empr,empresa.tipo_empr AS empresa.tipo_empr," + 
							 "cat_doc_identificacion.id_cat_doc_iden AS cat_doc_identificacion.id_cat_doc_iden,cat_doc_identificacion.nom_cat_doc_iden AS cat_doc_identificacion.nom_cat_doc_iden," + 
							 "cat_jornada.id_jor AS cat_jornada.id_jor,cat_jornada.tipo_jor AS cat_jornada.tipo_jor,cat_jornada.hora_ini_matutina AS cat_jornada.hora_ini_matutina,cat_jornada.hora_fin_matutina AS cat_jornada.hora_fin_matutina,cat_jornada.hora_ini_vespertina AS cat_jornada.hora_ini_vespertina,cat_jornada.hora_fin_vespertina AS cat_jornada.hora_fin_vespertina,cat_jornada.hora_ini_nocturna AS cat_jornada.hora_ini_nocturna,cat_jornada.hora_fin_nocturna AS cat_jornada.hora_fin_nocturna,cat_jornada.hora_ini_madrugada AS cat_jornada.hora_ini_madrugada,cat_jornada.hora_fin_madrugada AS cat_jornada.hora_fin_madrugada,cat_jornada.nro_dias AS cat_jornada.nro_dias," + 
							 "cat_estado_civil.id_cat_estado_civil_emp AS cat_estado_civil.id_cat_estado_civil_emp,cat_estado_civil.nombre_cat_estado_civil_emp AS cat_estado_civil.nombre_cat_estado_civil_emp," + 
							 "cat_nivel_academico.id_cat_nivel_acad AS cat_nivel_academico.id_cat_nivel_acad,cat_nivel_academico.nombre_cat_nivel_acad AS cat_nivel_academico.nombre_cat_nivel_acad";
			try
			{
				if(filtro=="")
					joins_ = "empleados.id_cat_cargo = cat_cargos.id_cat_cargo AND empleados.id_empr_fk = empresa.id_empr AND empleados.id_cat_doc_identificacion = cat_doc_identificacion.id_cat_doc_iden AND empleados.cat_jor_id_fk_emp = cat_jornada.id_jor AND empleados.id_cat_estado_civil_emp = cat_estado_civil.id_cat_estado_civil_emp AND empleados.id_cat_nivel_acad = cat_nivel_academico.id_cat_nivel_acad ";
				else
					joins_ = "empleados.id_cat_cargo = cat_cargos.id_cat_cargo AND empleados.id_empr_fk = empresa.id_empr AND empleados.id_cat_doc_identificacion = cat_doc_identificacion.id_cat_doc_iden AND empleados.cat_jor_id_fk_emp = cat_jornada.id_jor AND empleados.id_cat_estado_civil_emp = cat_estado_civil.id_cat_estado_civil_emp AND empleados.id_cat_nivel_acad = cat_nivel_academico.id_cat_nivel_acad AND  " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "cat_cargos,empresa,cat_doc_identificacion,cat_jornada,cat_estado_civil,cat_nivel_academico,empleados",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
        public static DataTable ListarTodos_Joins_Alias_personaliza(string filtro)
        {
            DataTable r = new DataTable();
            string joins_ = "";
            string campos_ = "empleados.id_emp AS ID,empleados.cedula_emp AS \"CI. / Ruc.\",CONCAT(empleados.nombre_emp ,' ',empleados.apellido_emp) AS Empleado," +
                             "cat_cargos.nombre_cat_cargo AS Cargo," +
                             "cat_jornada.tipo_jor AS \"Tipo Laboral\"";
            try
            {
                if (filtro == "")
                    joins_ = "empleados.id_cat_cargo = cat_cargos.id_cat_cargo AND empleados.cat_jor_id_fk_emp = cat_jornada.id_jor ";
                else
                    joins_ = "empleados.id_cat_cargo = cat_cargos.id_cat_cargo AND empleados.cat_jor_id_fk_emp = cat_jornada.id_jor  AND  " + filtro;
                r = ValidarBuilder.ListarTodos(joins_, "cat_cargos,cat_jornada,empleados", campos_).Tables[0];
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return r;
        }


        public static DataTable ListarTodos_Joins_Alias_personaliza_salario(string filtro)
        {
            DataTable r = new DataTable();
            string joins_ = "";
            string campos_ = "empleados.id_emp AS ID,empleados.cedula_emp AS \"CI. / Ruc.\",CONCAT(empleados.nombre_emp ,' ',empleados.apellido_emp) AS Empleado," +
                             "cat_cargos.nombre_cat_cargo AS Cargo," +
                             "cat_jornada.tipo_jor AS \"Tipo Laboral\",0 AS id_salario,0.00 AS Salario";
            try
            {
                if (filtro == "")
                    joins_ = "empleados.id_cat_cargo = cat_cargos.id_cat_cargo AND empleados.cat_jor_id_fk_emp = cat_jornada.id_jor ";
                else
                    joins_ = "empleados.id_cat_cargo = cat_cargos.id_cat_cargo AND empleados.cat_jor_id_fk_emp = cat_jornada.id_jor  AND  " + filtro;
                r = ValidarBuilder.ListarTodos(joins_, "cat_cargos,cat_jornada,empleados", campos_).Tables[0];
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return r;
        }


        public static DataTable ListarTodos_Joins_Alias_personaliza_tiempos(string filtro)
        {
            DataTable r = new DataTable();
            string joins_ = "";
            string campos_ = "empleados.id_emp AS ID,empleados.cedula_emp AS \"CI. / Ruc.\",CONCAT(empleados.nombre_emp ,' ',empleados.apellido_emp) AS Empleado," +
                             "cat_cargos.nombre_cat_cargo AS Cargo," +
                             "cat_jornada.tipo_jor AS \"Tipo Laboral\",nro_horas_ingreso AS Ingreso,nro_horas_atraso AS Atraso,nro_horas_salida AS Salida";
            try
            {
                if (filtro == "")
                    joins_ = "empleados.id_cat_cargo = cat_cargos.id_cat_cargo AND empleados.cat_jor_id_fk_emp = cat_jornada.id_jor ";
                else
                    joins_ = "empleados.id_cat_cargo = cat_cargos.id_cat_cargo AND empleados.cat_jor_id_fk_emp = cat_jornada.id_jor  AND  " + filtro;
                r = ValidarBuilder.ListarTodos(joins_, "cat_cargos,cat_jornada,empleados", campos_).Tables[0];
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return r;
        }
		#endregion

		#region < METODOS PUBLICOS VALIDACION >
		public static empleados valida_campos_empleados(Control ctrl_id_emp,TextBox txt_cedula_emp,TextBox txt_nombre_emp,TextBox txt_apellido_emp,TextBox txt_direccion_emp,TextBox txt_telefono_emp,Control ctrl_id_cat_cargo,TextBox txt_genero_emp,Control ctrl_id_cat_nivel_acad,DateTime dpk_fecha_nac_emp,DateTime dpk_fecha_contrato_emp,Control ctrl_id_cat_estado_civil_emp,Control ctrl_cargas_familiares_emp,byte[] bin_foto_emp,Control ctrl_id_cat_doc_identificacion,DateTime dpk_fecha_salida_emp,Control ctrl_estado_emp,Control ctrl_cat_jor_id_fk_emp,Control ctrl_id_empr_fk,Control ctrl_nro_horas_ingreso,Control ctrl_nro_horas_atraso,Control ctrl_nro_horas_salida,TextBox txt_emp_entrada_especial,TextBox txt_emp_controla_salida)
		{
			bool r = true;
			empleados new_empleados = new empleados();
			try
			{
				if(ctrl_id_emp.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_emp = (TextBox)ctrl_id_emp;
					if (txt_id_emp.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_emp.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_empleados.Id_emp = Convert.ToInt32(txt_id_emp.Text);
				}
				if(ctrl_id_emp.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_emp = (ComboBox)ctrl_id_emp;
					if (cmb_id_emp.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_empleados.Id_emp = Convert.ToInt32(cmb_id_emp.SelectedValue);
				}
				if (txt_cedula_emp.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la cedula_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_empleados.Cedula_emp = txt_cedula_emp.Text;
				if (txt_nombre_emp.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la nombre_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_empleados.Nombre_emp = txt_nombre_emp.Text;
				if (txt_apellido_emp.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la apellido_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_empleados.Apellido_emp = txt_apellido_emp.Text;
				if (txt_direccion_emp.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la direccion_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_empleados.Direccion_emp = txt_direccion_emp.Text;
				if (txt_telefono_emp.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la telefono_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_empleados.Telefono_emp = txt_telefono_emp.Text;
				if(ctrl_id_cat_cargo.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_cat_cargo = (TextBox)ctrl_id_cat_cargo;
					if (txt_id_cat_cargo.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_cat_cargo","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_cat_cargo.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_cat_cargo","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_empleados.Id_cat_cargo = Convert.ToInt32(txt_id_cat_cargo.Text);
				}
				if(ctrl_id_cat_cargo.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_cat_cargo = (ComboBox)ctrl_id_cat_cargo;
					if (cmb_id_cat_cargo.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_cat_cargo","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_empleados.Id_cat_cargo = Convert.ToInt32(cmb_id_cat_cargo.SelectedValue);
				}
				if (txt_genero_emp.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la genero_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_empleados.Genero_emp = txt_genero_emp.Text;
				if(ctrl_id_cat_nivel_acad.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_cat_nivel_acad = (TextBox)ctrl_id_cat_nivel_acad;
					if (txt_id_cat_nivel_acad.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_cat_nivel_acad","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_cat_nivel_acad.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_cat_nivel_acad","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_empleados.Id_cat_nivel_acad = Convert.ToInt32(txt_id_cat_nivel_acad.Text);
				}
				if(ctrl_id_cat_nivel_acad.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_cat_nivel_acad = (ComboBox)ctrl_id_cat_nivel_acad;
					if (cmb_id_cat_nivel_acad.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_cat_nivel_acad","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_empleados.Id_cat_nivel_acad = Convert.ToInt32(cmb_id_cat_nivel_acad.SelectedValue);
				}
				if (r)
					new_empleados.Fecha_nac_emp = dpk_fecha_nac_emp;
				if (r)
					new_empleados.Fecha_contrato_emp = dpk_fecha_contrato_emp;
				if(ctrl_id_cat_estado_civil_emp.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_cat_estado_civil_emp = (TextBox)ctrl_id_cat_estado_civil_emp;
					if (txt_id_cat_estado_civil_emp.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_cat_estado_civil_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_cat_estado_civil_emp.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_cat_estado_civil_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_empleados.Id_cat_estado_civil_emp = Convert.ToInt32(txt_id_cat_estado_civil_emp.Text);
				}
				if(ctrl_id_cat_estado_civil_emp.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_cat_estado_civil_emp = (ComboBox)ctrl_id_cat_estado_civil_emp;
					if (cmb_id_cat_estado_civil_emp.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_cat_estado_civil_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_empleados.Id_cat_estado_civil_emp = Convert.ToInt32(cmb_id_cat_estado_civil_emp.SelectedValue);
				}
				if(ctrl_cargas_familiares_emp.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_cargas_familiares_emp = (TextBox)ctrl_cargas_familiares_emp;
					if (txt_cargas_familiares_emp.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la cargas_familiares_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_cargas_familiares_emp.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la cargas_familiares_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_empleados.Cargas_familiares_emp = Convert.ToInt32(txt_cargas_familiares_emp.Text);
				}
				if(ctrl_cargas_familiares_emp.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_cargas_familiares_emp = (ComboBox)ctrl_cargas_familiares_emp;
					if (cmb_cargas_familiares_emp.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la cargas_familiares_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_empleados.Cargas_familiares_emp = Convert.ToInt32(cmb_cargas_familiares_emp.SelectedValue);
				}
				if (r)
					new_empleados.Foto_emp = bin_foto_emp;
				if(ctrl_id_cat_doc_identificacion.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_cat_doc_identificacion = (TextBox)ctrl_id_cat_doc_identificacion;
					if (txt_id_cat_doc_identificacion.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_cat_doc_identificacion","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_cat_doc_identificacion.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_cat_doc_identificacion","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_empleados.Id_cat_doc_identificacion = Convert.ToInt32(txt_id_cat_doc_identificacion.Text);
				}
				if(ctrl_id_cat_doc_identificacion.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_cat_doc_identificacion = (ComboBox)ctrl_id_cat_doc_identificacion;
					if (cmb_id_cat_doc_identificacion.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_cat_doc_identificacion","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_empleados.Id_cat_doc_identificacion = Convert.ToInt32(cmb_id_cat_doc_identificacion.SelectedValue);
				}
				if (r)
					new_empleados.Fecha_salida_emp = dpk_fecha_salida_emp;
				if(ctrl_estado_emp.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_estado_emp = (TextBox)ctrl_estado_emp;
					if (txt_estado_emp.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la estado_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_estado_emp.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la estado_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_empleados.Estado_emp = Convert.ToInt32(txt_estado_emp.Text);
				}
				if(ctrl_estado_emp.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_estado_emp = (ComboBox)ctrl_estado_emp;
					if (cmb_estado_emp.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la estado_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_empleados.Estado_emp = Convert.ToInt32(cmb_estado_emp.SelectedValue);
				}
				if(ctrl_cat_jor_id_fk_emp.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_cat_jor_id_fk_emp = (TextBox)ctrl_cat_jor_id_fk_emp;
					if (txt_cat_jor_id_fk_emp.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la cat_jor_id_fk_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_cat_jor_id_fk_emp.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la cat_jor_id_fk_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_empleados.Cat_jor_id_fk_emp = Convert.ToInt32(txt_cat_jor_id_fk_emp.Text);
				}
				if(ctrl_cat_jor_id_fk_emp.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_cat_jor_id_fk_emp = (ComboBox)ctrl_cat_jor_id_fk_emp;
					if (cmb_cat_jor_id_fk_emp.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la cat_jor_id_fk_emp","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_empleados.Cat_jor_id_fk_emp = Convert.ToInt32(cmb_cat_jor_id_fk_emp.SelectedValue);
				}
				if(ctrl_id_empr_fk.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_empr_fk = (TextBox)ctrl_id_empr_fk;
					if (txt_id_empr_fk.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_empr_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_empr_fk.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_empr_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_empleados.Id_empr_fk = Convert.ToInt32(txt_id_empr_fk.Text);
				}
				if(ctrl_id_empr_fk.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_empr_fk = (ComboBox)ctrl_id_empr_fk;
					if (cmb_id_empr_fk.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_empr_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_empleados.Id_empr_fk = Convert.ToInt32(cmb_id_empr_fk.SelectedValue);
				}
				if(ctrl_nro_horas_ingreso.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_nro_horas_ingreso = (TextBox)ctrl_nro_horas_ingreso;
					if (txt_nro_horas_ingreso.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la nro_horas_ingreso","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_nro_horas_ingreso.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la nro_horas_ingreso","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_empleados.Nro_horas_ingreso = Convert.ToInt32(txt_nro_horas_ingreso.Text);
				}
				if(ctrl_nro_horas_ingreso.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_nro_horas_ingreso = (ComboBox)ctrl_nro_horas_ingreso;
					if (cmb_nro_horas_ingreso.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la nro_horas_ingreso","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_empleados.Nro_horas_ingreso = Convert.ToInt32(cmb_nro_horas_ingreso.SelectedValue);
				}
				if(ctrl_nro_horas_atraso.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_nro_horas_atraso = (TextBox)ctrl_nro_horas_atraso;
					if (txt_nro_horas_atraso.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la nro_horas_atraso","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_nro_horas_atraso.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la nro_horas_atraso","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_empleados.Nro_horas_atraso = Convert.ToInt32(txt_nro_horas_atraso.Text);
				}
				if(ctrl_nro_horas_atraso.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_nro_horas_atraso = (ComboBox)ctrl_nro_horas_atraso;
					if (cmb_nro_horas_atraso.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la nro_horas_atraso","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_empleados.Nro_horas_atraso = Convert.ToInt32(cmb_nro_horas_atraso.SelectedValue);
				}
				if(ctrl_nro_horas_salida.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_nro_horas_salida = (TextBox)ctrl_nro_horas_salida;
					if (txt_nro_horas_salida.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la nro_horas_salida","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_nro_horas_salida.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la nro_horas_salida","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_empleados.Nro_horas_salida = Convert.ToInt32(txt_nro_horas_salida.Text);
				}
				if(ctrl_nro_horas_salida.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_nro_horas_salida = (ComboBox)ctrl_nro_horas_salida;
					if (cmb_nro_horas_salida.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la nro_horas_salida","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_empleados.Nro_horas_salida = Convert.ToInt32(cmb_nro_horas_salida.SelectedValue);
				}
				if (txt_emp_entrada_especial.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la emp_entrada_especial","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_empleados.Emp_entrada_especial = txt_emp_entrada_especial.Text;
				if (txt_emp_controla_salida.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la emp_controla_salida","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_empleados.Emp_controla_salida = txt_emp_controla_salida.Text;

				if(!r)
					new_empleados = null;
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return new_empleados;
		}

		public static void grabar_actualizar_registro(Control ctrl_id_emp,TextBox txt_cedula_emp,TextBox txt_nombre_emp,TextBox txt_apellido_emp,TextBox txt_direccion_emp,TextBox txt_telefono_emp,Control ctrl_id_cat_cargo,TextBox txt_genero_emp,Control ctrl_id_cat_nivel_acad,DateTime dpk_fecha_nac_emp,DateTime dpk_fecha_contrato_emp,Control ctrl_id_cat_estado_civil_emp,Control ctrl_cargas_familiares_emp,byte[] bin_foto_emp,Control ctrl_id_cat_doc_identificacion,DateTime dpk_fecha_salida_emp,Control ctrl_estado_emp,Control ctrl_cat_jor_id_fk_emp,Control ctrl_id_empr_fk,Control ctrl_nro_horas_ingreso,Control ctrl_nro_horas_atraso,Control ctrl_nro_horas_salida,TextBox txt_emp_entrada_especial,TextBox txt_emp_controla_salida)
		{
			try
			{
				empleados new_empleados =valida_campos_empleados(ctrl_id_emp,txt_cedula_emp,txt_nombre_emp,txt_apellido_emp,txt_direccion_emp,txt_telefono_emp,ctrl_id_cat_cargo,txt_genero_emp,ctrl_id_cat_nivel_acad,dpk_fecha_nac_emp,dpk_fecha_contrato_emp,ctrl_id_cat_estado_civil_emp,ctrl_cargas_familiares_emp,bin_foto_emp,ctrl_id_cat_doc_identificacion,dpk_fecha_salida_emp,ctrl_estado_emp,ctrl_cat_jor_id_fk_emp,ctrl_id_empr_fk,ctrl_nro_horas_ingreso,ctrl_nro_horas_atraso,ctrl_nro_horas_salida,txt_emp_entrada_especial,txt_emp_controla_salida); 
				if(new_empleados!=null)
					GrabarViaProcedimiento(new_empleados);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}

		public static bool grabar_actualizar_registro_personaliza(Control ctrl_id_emp,TextBox txt_cedula_emp,TextBox txt_nombre_emp,TextBox txt_apellido_emp,TextBox txt_direccion_emp,TextBox txt_telefono_emp,Control ctrl_id_cat_cargo,TextBox txt_genero_emp,Control ctrl_id_cat_nivel_acad,DateTime dpk_fecha_nac_emp,DateTime dpk_fecha_contrato_emp,Control ctrl_id_cat_estado_civil_emp,Control ctrl_cargas_familiares_emp,byte[] bin_foto_emp,Control ctrl_id_cat_doc_identificacion,DateTime dpk_fecha_salida_emp,Control ctrl_estado_emp,Control ctrl_cat_jor_id_fk_emp,Control ctrl_id_empr_fk,Control ctrl_nro_horas_ingreso,Control ctrl_nro_horas_atraso,Control ctrl_nro_horas_salida,TextBox txt_emp_entrada_especial,TextBox txt_emp_controla_salida)
		{
			bool r = false;
			try
			{
				empleados new_empleados =valida_campos_empleados(ctrl_id_emp,txt_cedula_emp,txt_nombre_emp,txt_apellido_emp,txt_direccion_emp,txt_telefono_emp,ctrl_id_cat_cargo,txt_genero_emp,ctrl_id_cat_nivel_acad,dpk_fecha_nac_emp,dpk_fecha_contrato_emp,ctrl_id_cat_estado_civil_emp,ctrl_cargas_familiares_emp,bin_foto_emp,ctrl_id_cat_doc_identificacion,dpk_fecha_salida_emp,ctrl_estado_emp,ctrl_cat_jor_id_fk_emp,ctrl_id_empr_fk,ctrl_nro_horas_ingreso,ctrl_nro_horas_atraso,ctrl_nro_horas_salida,txt_emp_entrada_especial,txt_emp_controla_salida); 
				if(new_empleados!=null)
				{
					r = true;
					GrabarViaProcedimiento(new_empleados);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		#endregion

	}
}
